\hypertarget{interface_8h}{
\section{Referência ao ficheiro interface.h}
\label{interface_8h}\index{interface.h@{interface.h}}
}
Arquivo responsável por receber e interpretar comandos de administração do L2LB. 

{\tt \#include $<$linux/proc\_\-fs.h$>$}\par
{\tt \#include $<$asm/uaccess.h$>$}\par
{\tt \#include \char`\"{}cluster.h\char`\"{}}\par
\subsection*{Macros}
\begin{CompactItemize}
\item 
\#define \hyperlink{interface_8h_cb57117519ba69a9fa2bc2ea4661ccaf}{PROCFS\_\-MAX\_\-SIZE}~1024
\item 
\#define \hyperlink{interface_8h_b1dafda7cd89906a3be27b9bcd279a0b}{PROCFS\_\-NAME}~\char`\"{}nlb\char`\"{}
\end{CompactItemize}
\subsection*{Funções}
\begin{CompactItemize}
\item 
void \hyperlink{interface_8h_5ed0ad92bc73cd43e19e29f0ff7aa8b4}{cmd\_\-add\_\-node} (char $\ast$args)
\begin{CompactList}\small\item\em Adiciona um servido ao \hyperlink{structcluster}{cluster}. \item\end{CompactList}\item 
void \hyperlink{interface_8h_f3fa25a0ac2d61c6d5700b9bf0a0132b}{cmd\_\-my\_\-node} (char $\ast$args)
\begin{CompactList}\small\item\em Indica na lista de servidores, qual deles é servidor atual. \item\end{CompactList}\item 
int \hyperlink{interface_8h_955b05c0f5c5662d771a12b4881c479a}{procfile\_\-read} (char $\ast$buffer, char $\ast$$\ast$buffer\_\-location, off\_\-t offset, int buffer\_\-length, int $\ast$eof, void $\ast$data)
\begin{CompactList}\small\item\em Funçao chamada quando o arquivo /proc/nlb é lido. \item\end{CompactList}\item 
int \hyperlink{interface_8h_140b602157d344e18a9e8750d96d7d81}{procfile\_\-write} (struct file $\ast$file, const char $\ast$buffer, unsigned long count, void $\ast$data)
\begin{CompactList}\small\item\em Função chamado quando se escreve no arquivo /proc/nlb. \item\end{CompactList}\item 
int \hyperlink{interface_8h_65a3f35a0907ebf967e1f54265516827}{init\_\-proc\_\-interface} (void)
\begin{CompactList}\small\item\em Inicializa a interface do \hyperlink{structcluster}{cluster} criando o arquivo /proc/nlb. \item\end{CompactList}\end{CompactItemize}
\subsection*{Variáveis}
\begin{CompactItemize}
\item 
static struct proc\_\-dir\_\-entry $\ast$ \hyperlink{interface_8h_86ed009339cd472e0414306129f6650d}{my\_\-proc\_\-file}
\begin{CompactList}\small\item\em Esta estrutura mantém informações sobre o arquivo /proc/nlb. \item\end{CompactList}\end{CompactItemize}


\subsection{Descrição detalhada}
Arquivo responsável por receber e interpretar comandos de administração do L2LB. 

Estes comandos são enviados através de /proc/nlb 

Definido no ficheiro \hyperlink{interface_8h-source}{interface.h}.

\subsection{Documentação das macros}
\hypertarget{interface_8h_cb57117519ba69a9fa2bc2ea4661ccaf}{
\index{interface.h@{interface.h}!PROCFS\_\-MAX\_\-SIZE@{PROCFS\_\-MAX\_\-SIZE}}
\index{PROCFS\_\-MAX\_\-SIZE@{PROCFS\_\-MAX\_\-SIZE}!interface.h@{interface.h}}
\subsubsection[PROCFS\_\-MAX\_\-SIZE]{\setlength{\rightskip}{0pt plus 5cm}\#define PROCFS\_\-MAX\_\-SIZE~1024}}
\label{interface_8h_cb57117519ba69a9fa2bc2ea4661ccaf}




Definido na linha 15 do ficheiro interface.h.

Referenciado por procfile\_\-write().\hypertarget{interface_8h_b1dafda7cd89906a3be27b9bcd279a0b}{
\index{interface.h@{interface.h}!PROCFS\_\-NAME@{PROCFS\_\-NAME}}
\index{PROCFS\_\-NAME@{PROCFS\_\-NAME}!interface.h@{interface.h}}
\subsubsection[PROCFS\_\-NAME]{\setlength{\rightskip}{0pt plus 5cm}\#define PROCFS\_\-NAME~\char`\"{}nlb\char`\"{}}}
\label{interface_8h_b1dafda7cd89906a3be27b9bcd279a0b}




Definido na linha 16 do ficheiro interface.h.

Referenciado por init\_\-proc\_\-interface().

\subsection{Documentação das funções}
\hypertarget{interface_8h_5ed0ad92bc73cd43e19e29f0ff7aa8b4}{
\index{interface.h@{interface.h}!cmd\_\-add\_\-node@{cmd\_\-add\_\-node}}
\index{cmd\_\-add\_\-node@{cmd\_\-add\_\-node}!interface.h@{interface.h}}
\subsubsection[cmd\_\-add\_\-node]{\setlength{\rightskip}{0pt plus 5cm}void cmd\_\-add\_\-node (char $\ast$ {\em args})}}
\label{interface_8h_5ed0ad92bc73cd43e19e29f0ff7aa8b4}


Adiciona um servido ao \hyperlink{structcluster}{cluster}. 

O argumento para adicionar um servidor deve ter o seguinte formato:\begin{itemize}
\item \{ID\},\{VIP\}\end{itemize}


Onde \{ID\} é o ID do servidor, e \{VIP\} é o VLAN-IP do servidor

\begin{Desc}
\item[Parâmetros:]
\begin{description}
\item[{\em args}]Argumentos para o comando de adicionar um servidor \end{description}
\end{Desc}


Definido na linha 33 do ficheiro interface.h.

Referências add\_\-cluster\_\-node() e parse\_\-ipv4\_\-addr().

Referenciado por procfile\_\-write().\hypertarget{interface_8h_f3fa25a0ac2d61c6d5700b9bf0a0132b}{
\index{interface.h@{interface.h}!cmd\_\-my\_\-node@{cmd\_\-my\_\-node}}
\index{cmd\_\-my\_\-node@{cmd\_\-my\_\-node}!interface.h@{interface.h}}
\subsubsection[cmd\_\-my\_\-node]{\setlength{\rightskip}{0pt plus 5cm}void cmd\_\-my\_\-node (char $\ast$ {\em args})}}
\label{interface_8h_f3fa25a0ac2d61c6d5700b9bf0a0132b}


Indica na lista de servidores, qual deles é servidor atual. 

O argumento para este comando é o ID do servidor.

\begin{Desc}
\item[Parâmetros:]
\begin{description}
\item[{\em args}]Argumento \end{description}
\end{Desc}


Definido na linha 53 do ficheiro interface.h.

Referências get\_\-node\_\-by\_\-id(), hb\_\-rebuild\_\-msg(), my\_\-cluster, cluster::my\_\-node e my\_\-node.

Referenciado por procfile\_\-write().\hypertarget{interface_8h_65a3f35a0907ebf967e1f54265516827}{
\index{interface.h@{interface.h}!init\_\-proc\_\-interface@{init\_\-proc\_\-interface}}
\index{init\_\-proc\_\-interface@{init\_\-proc\_\-interface}!interface.h@{interface.h}}
\subsubsection[init\_\-proc\_\-interface]{\setlength{\rightskip}{0pt plus 5cm}int init\_\-proc\_\-interface (void)}}
\label{interface_8h_65a3f35a0907ebf967e1f54265516827}


Inicializa a interface do \hyperlink{structcluster}{cluster} criando o arquivo /proc/nlb. 



Definido na linha 162 do ficheiro interface.h.

Referências my\_\-proc\_\-file, procfile\_\-read(), procfile\_\-write() e PROCFS\_\-NAME.

Referenciado por nlb\_\-init\_\-module().\hypertarget{interface_8h_955b05c0f5c5662d771a12b4881c479a}{
\index{interface.h@{interface.h}!procfile\_\-read@{procfile\_\-read}}
\index{procfile\_\-read@{procfile\_\-read}!interface.h@{interface.h}}
\subsubsection[procfile\_\-read]{\setlength{\rightskip}{0pt plus 5cm}int procfile\_\-read (char $\ast$ {\em buffer}, \/  char $\ast$$\ast$ {\em buffer\_\-location}, \/  off\_\-t {\em offset}, \/  int {\em buffer\_\-length}, \/  int $\ast$ {\em eof}, \/  void $\ast$ {\em data})}}
\label{interface_8h_955b05c0f5c5662d771a12b4881c479a}


Funçao chamada quando o arquivo /proc/nlb é lido. 

Ela retorna o estado do \hyperlink{structcluster}{cluster}:\begin{itemize}
\item A lista de servidores operacionais\item Qual é o próximo servidor que irá atender à requisção de um novo cliente\item Qual é o servidor atual \end{itemize}


Definido na linha 80 do ficheiro interface.h.

Referências cluster::head, cluster\_\-node::id, my\_\-cluster, cluster::my\_\-node, cluster\_\-node::next, cluster::next\_\-serving e cluster\_\-node::vlan\_\-ip.

Referenciado por init\_\-proc\_\-interface().\hypertarget{interface_8h_140b602157d344e18a9e8750d96d7d81}{
\index{interface.h@{interface.h}!procfile\_\-write@{procfile\_\-write}}
\index{procfile\_\-write@{procfile\_\-write}!interface.h@{interface.h}}
\subsubsection[procfile\_\-write]{\setlength{\rightskip}{0pt plus 5cm}int procfile\_\-write (struct file $\ast$ {\em file}, \/  const char $\ast$ {\em buffer}, \/  unsigned long {\em count}, \/  void $\ast$ {\em data})}}
\label{interface_8h_140b602157d344e18a9e8750d96d7d81}


Função chamado quando se escreve no arquivo /proc/nlb. 

O conteúdo escrito é um dos comando administrativos abaixo:\begin{itemize}
\item Adiciona servidores ao \hyperlink{structcluster}{cluster}\item Define o meu servidor\item Define o protocolo que sera balanceado \end{itemize}


Definido na linha 129 do ficheiro interface.h.

Referências cmd\_\-add\_\-node(), cmd\_\-my\_\-node() e PROCFS\_\-MAX\_\-SIZE.

Referenciado por init\_\-proc\_\-interface().

\subsection{Documentação das variáveis}
\hypertarget{interface_8h_86ed009339cd472e0414306129f6650d}{
\index{interface.h@{interface.h}!my\_\-proc\_\-file@{my\_\-proc\_\-file}}
\index{my\_\-proc\_\-file@{my\_\-proc\_\-file}!interface.h@{interface.h}}
\subsubsection[my\_\-proc\_\-file]{\setlength{\rightskip}{0pt plus 5cm}struct proc\_\-dir\_\-entry$\ast$ {\bf my\_\-proc\_\-file}\hspace{0.3cm}{\tt  \mbox{[}static\mbox{]}}}}
\label{interface_8h_86ed009339cd472e0414306129f6650d}


Esta estrutura mantém informações sobre o arquivo /proc/nlb. 



Definido na linha 21 do ficheiro interface.h.

Referenciado por init\_\-proc\_\-interface().